出处:掘金
原作者:ErpanOmer
Time to First Byte (TTFB) 是衡量网站性能的一个重要指标。通过优化 TTFB,不仅能提升用户体验,还能改善搜索引擎排名。以下内容将从技术角度深入解析 TTFB,并结合代码示例提供直观的优化思路
TTFB 分为以下几个阶段:
公式:
TTFB = DNS解析时间 + 建立连接时间 + 服务器处理时间 + 数据传输时间
通过 curl 命令快速测量某个网站的 TTFB:
curl -o /dev/null -s -w "%{time_starttransfer}\n" https://example.com
# 输出示例:0.234
# 表示从发出请求到接收到第一个字节耗时 234 ms
如果需要更灵活的自定义测量,可以使用 Python 结合 requests 库:
import requests
import time
def measure_ttfb(url):
start = time.time()
response = requests.get(url)
first_byte_time = time.time() - start
print(f"TTFB for {url}: {first_byte_time:.3f} seconds")
measure_ttfb("https://example.com")
WebPageTest 是一个免费工具,可以详细展示网站性能数据,包括 TTFB:
缓存能显著降低服务器的响应时间,以下是两种常见缓存方法:
服务器端缓存:Redis
import redis
# 配置 Redis 连接
cache = redis.StrictRedis(host='localhost', port=6379, db=0)
def get_data_with_cache(key):
if cache.exists(key):
return cache.get(key) # 从缓存读取数据
else:
# 模拟耗时计算或数据库查询
data = f"Data for {key}"
cache.set(key, data, ex=3600) # 保存到缓存,过期时间 1 小时
return data
# 测试缓存机制
print(get_data_with_cache("example_key"))
前端浏览器缓存:添加 HTTP 缓存头
在 Nginx 配置中添加:
location /static/ {
expires 30d; # 缓存静态资源 30 天
add_header Cache-Control "public";
}
CDN 可显著降低地理距离对传输的影响。例如,使用 Cloudflare 免费 CDN:
location / {
proxy_cache cloudflare_cache;
proxy_cache_valid 200 1h;
}
数据库优化可以减少动态内容生成时间。例如,通过索引提升查询效率:
-- 为用户表添加索引
CREATE INDEX idx_user_email ON users(email);
-- 优化后的查询速度更快
SELECT * FROM users WHERE email = 'example@example.com';
HTTP/2 提供了多路复用,减少了传输时间。以下是在 Nginx 中启用 HTTP/2 的示例:
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
}
如果需要进一步提升,可以启用 HTTP/3(QUIC 协议),但需升级到支持 QUIC 的 Nginx 版本
通过更快的 DNS 服务商优化解析时间。例如,使用 Google 的 DNS:
8.8.8.88.8.4.4可以在域名注册商后台设置
某电商网站 TTFB 为 1.8 秒,导致用户流失率高达 35%。通过以下优化措施,效果显著
优化前:
优化后:
通过合理的技术手段(如缓存、CDN、协议升级、数据库优化),可以有效降低 TTFB,改善网站性能。如果您正在为 TTFB 苦恼,不妨尝试本文中的方法,并结合实际情况逐步优化!